﻿using System.Collections.Generic;
using System.Linq;
using MIAP.DataAccess.Interfaces;
using MIAP.DataAccess.SqlServer.Model;
using MIAP.Entidades;

namespace MIAP.DataAccess.Implementaciones.SQL
{
    /// <summary>
    /// Clase de las operaciones de acceso a datos de la vista Perfiles.
    /// </summary>
    public class PerfilUrlDao : IPerfilUrlDao
    {
        /// <summary>
        /// Obtiene todos las urls.
        /// </summary>
        /// <returns>Lista con todos las urls.</returns>
        IList<PerfilUrlInfo> IPerfilUrlDao.GetPerfilUrl()
        {
            return this.GetPerfilUrlInterno(null);
        }

        /// <summary>
        /// Método privado en donde obtenemos las urls de todas las vistas o de una en específico.
        /// </summary>
        /// <param name="idPerfilUrl">Es el id de la url de la vista.</param>
        /// <returns>Lista de urls.</returns>
        private IList<PerfilUrlInfo> GetPerfilUrlInterno(int? idPerfilUrl)
        {
            IList<PerfilUrlInfo> result;
            using (var context = new MIAPDBEntities())
            {

                var query = from miapPerfilUrl in context.MIAP_PERFIL_URL
                            where (!idPerfilUrl.HasValue || miapPerfilUrl.ID_PERFIL_URL == idPerfilUrl.Value)
                            select new PerfilUrlInfo
                            {
                                IdPerfilUrl = miapPerfilUrl.ID_PERFIL_URL
                                ,
                                Descripcion = miapPerfilUrl.DESCRIPCION
                                ,
                                Nombre = miapPerfilUrl.NOMBRE
                                ,
                                Url = miapPerfilUrl.URL
                            };
                result = query.ToList();
            }

            return result;
        }
    }
}
